// 整个项目中比较常用的js函数
/**
 * 说明:以window.open的方式打开页面 参数：urls-需要打开的页面地址 widths-页面显示的宽 heigths-页面显示的高
 */
function open_win(urls,widths,heigths,owin){
	if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style) { 
		widths = widths+20;
		heigths = heigths+20;
	}
	var winPar=window.showModalDialog(urls,owin,'dialogWidth='+widths+'px;dialogHeight='+heigths+'px;status=no;center=yes;scroll=no;Minimize=yes;Maximize=yes');
	if(winPar == "refresh")
		window.location.reload();
	else if(winPar=="relogin"){	   
		if(window.parent.parent)
			 window.parent.parent.location.href="/v/main/login";
		else
		    window.parent.location.href="/v/main/login";
	}

}


function openwin(urls,name,widths,heigths){
	var h = heigths==null?$(window).height():heigths;
	var w = widths==null?$(window).width():widths;
	name=isEmpty(name)?"new_win":name;
	var left =(w-widths)/2;
　　var win = window.open(urls, name, "height="+h+", width="+w+", top=0, left="+left+",toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, status=no");
	return win;
}

function open_self(urls){
	location.href=urls;
}

/**
 * 功能说明:从常量文件读取数据给select设值 参数说明:obj-select对象 constName-常量变量名 -----以下为非必须参数------
 * isChangeFirst-(true显示第一个选项为自定义或空)
 * firstName-(自定义第一个选项的名称,在isChangeFirst为true情况下有效) 例子: var
 * jsonTest={"1":"住宅","2":"商铺","3":"商住两用"}; var
 * jsonArea={'1':'深圳福田','2':'深圳罗湖'};
 * setSelectConst(document.getElementById('cityid'),'jsonTest',true,'请选择');
 * setSelectConst(document.getElementById('areaid'),'jsonArea');
 */
function setSelectConst(obj,constName,isChangeFirst,firstName){	
	if(obj==null)
		return;
    var constObj=eval(constName);	
	if(isChangeFirst){	
	   // 设置第一项显示内容
	   if(typeof(firstName)=='undefined' || firstName.length<=0)
	       firstName='';
	   var objOption=document.createElement("OPTION");
	   obj.appendChild(objOption);  
       objOption.text =firstName;  
       objOption.value =0;	
	}
	// 循环读取json常量对象值
	for(var v in constObj){      
	   var objOption=document.createElement("OPTION");
	   obj.appendChild(objOption);  
       objOption.text =constObj[v];  
       objOption.value =v;  	  
	}
}
/**
 * 功能说明:从常量文件读取数据给select设值 参数说明:options为json格式数据，具体参数名如下： obj-select对象
 * constName-常量变量名 -----以下为非必须参数------ isChangeFirst-(true显示第一个选项为自定义或空)
 * firstName-(自定义第一个选项的名称,在isChangeFirst为true情况下有效) limit:限制显示前limit项数
 * 
 */
function setSelectConstLimit(options){	
    var _options=options || {};
	var obj=_options.obj;
	var constName=_options.constName;
	var isChangeFirst=_options.isChangeFirst;
	var firstName=_options.firstName;
	var limit=_options.limit;
	if(typeof(obj)=='undefined')
	    return;
	if(typeof(constName)=='undefined' || constName.length<=0)
	   return;
	var constObj=eval(constName);	
	if(isChangeFirst){	
	   // 设置第一项显示内容
	   if(typeof(firstName)=='undefined' || firstName.length<=0)
	       firstName='';
	   var objOption=document.createElement("OPTION");
	   obj.appendChild(objOption);  
       objOption.text =firstName;  
       objOption.value =-1;	
	}
	// 循环读取json常量对象值
	var n=0;
	for(var v in constObj){      
	   if(typeof(limit)!='undefined' && parseInt(limit)>0){
			if(n>=parseInt(limit))
			    break;
			n++;   
	   }
	   var objOption=document.createElement("OPTION");
	   obj.appendChild(objOption);  
       objOption.text =constObj[v];  
       objOption.value =v;  	  
	}
}
/**
 * 功能说明:根据JSON常量属性读取值，作为指定对象的内容显示 参数说明:obj--需要显示内容的对象 constName-JSON常量对象名
 * constProperty-JSON常量对象的属性名 例子: <#list Test! as test>
 * <td class="fang_list_loupan" id="td_zx_${test_index}">
 * <script>setConstContent(document.getElementById('td_area_${test_index}'),'jsonArea',${test})</script>
 * </td>
 * </#list>
 */
function setConstContent(obj,constName,constProperty){
	var constObj=eval(constName);
	var val = constObj[constProperty];
	if(typeof(val)=='undefined'){
		val = '&nbsp;';
	}
	obj.innerHTML=val;
}

/**
 * 功能说明:获取根据JSON常量属性读取的值 参数说明:constName-JSON常量对象名 constProperty-JSON常量对象的属性名 例子:
 * setConstContent('jsonArea',${test});
 * 
 */
function getConstContent(constName,constProperty){
	var constObj=eval(constName);
	var val = constObj[constProperty];
	if(typeof(val)=='undefined'){
		val = '&nbsp;';
	}
	return val;
}



/**
 * 功能说明：根据区域父级ID读取其区域信息 参数说明: pid-父级区域ID值 moduleIdPar-显示区域信息的组件ID字符串
 * ----以下为非必须参数--- options :
 * 格式为{isAsync:false,isFirst:true,firstName:可自定义也可不写,moduleArr:['moduleId1','moduleId2']}
 * 1.其中isFirst，firstName，moduleArr参数都可以不写但写时参数名不能变;
 * 2.isFirst是否显示默认项，firstName默认项的txt值，只有在isFirst为true情况下有效;
 * 3.moduleArr为需要清空内容的组件ID数组 4.isAsync是否异步，默认为true，当需要同步操作时请设为false 例子： 在选择城市时调用
 * getNextArea(this.value,'areaid',{isAsync:false,isFirst:true,firstName:'请选择',moduleArr:['areaid','placeid']}
 * 显示时组件areaid的第一项将为 ‘请选择’，placeid组件也将同时被清空
 */
function getNextArea(pid,moduleIdPar,options){
	try {
		if(typeof(pid)=='undefined' || pid.length<=0 || isNaN(pid)){
			alert("无效参数");
			return;
		}
	
		if(parseInt(pid)<=0){
			return;
		}
		if(typeof(moduleIdPar)=='undefined' || moduleIdPar.length<=0){
			return;	
		}	
		$("#"+moduleIdPar).empty();	
		/** ********************可选参数操作 开始*************** */
		var _options=options || {};	
		var _moduleArr=_options.moduleArr || [];		
		// 循环清空指定组件内容
		if(_moduleArr){		
			for(var i=0;i<_moduleArr.length;i++)
			    $("#"+_moduleArr[i]).empty();
		}
		// 重新设置第一个选择项
		if(_options.isFirst){
			var _defText=_options.firstName;
			if(typeof(_defText)=='undefined' || _defText.length<=0)
	       		_defText='';			
			$("#"+moduleIdPar).html("<option value='-1'>"+_defText+"</option>");
		}
		// 判断是否需要异步操作
		var isAsync=true;
		if(typeof(_options.isAsync)!='undefined' &&  !(_options.isAsync)){
	  		isAsync=false;
	    }		
		/** ********************可选参数操作 结束****************** */
		$.ajax({
			type:"POST",
			dataType:"json",
			url:"/v/deptworker/ajaxArea",
			async: isAsync,
			data:{pid:pid},
			success:function(msg){
					var data = msg;
					var op=[];
					if(data.infoNo==1){
						var areaList = data.areaList;					
						if(typeof(areaList)!='undefined' && areaList.length>0){			
							for(var i=0;i<areaList.length;i++){
								op.push("<option value='"+areaList[i].areaId+"'>"+areaList[i].areaName+"</option>");
							}
							$("#"+moduleIdPar).append(op.join(''));
						}
					}else{
						return;
					}
			}
		});
	} catch (e) {
		alert(e.message);
		return;
	}
}

/** *********** 此方法用于对楼盘进行增删改时所做的权限判断，即某人只能增删改某几个片区的楼盘字典 开始*********** */
/**
 * 功能说明：根据区域父级ID读取其区域信息 参数说明: pid-父级区域ID值 moduleIdPar-显示区域信息的组件ID字符串
 * ----以下为非必须参数--- options :
 * 格式为{isAsync:false,isFirst:true,firstName:可自定义也可不写,moduleArr:['moduleId1','moduleId2']}
 * 1.其中isFirst，firstName，moduleArr参数都可以不写但写时参数名不能变;
 * 2.firstName只有在isFirst为true情况下有效; 3.moduleArr为需要情况内容的组件ID数组
 * 4.isAsync是否异步，默认为true，当需要同步操作时请设为false 例子： 在选择城市时调用
 * getNextArea(this.value,'areaid',{isAsync:false,isFirst:true,firstName:'请选择',moduleArr:['areaid','placeid']}
 * 显示时组件areaid的第一项将为 ‘请选择’，placeid组件也将同时被清空
 */
function getNextAreaInfo(pid,moduleIdPar,options){
	try {
		if(typeof(pid)=='undefined' || pid.length<=0 || isNaN(pid)){
			alert("无效参数");
			return;
		}
	
		if(parseInt(pid)<=0){
			return;
		}
		if(typeof(moduleIdPar)=='undefined' || moduleIdPar.length<=0){
			return;	
		}	
		$("#"+moduleIdPar).empty();	
		/** ********************可选参数操作 开始*************** */
		var _options=options || {};	
		var _moduleArr=_options.moduleArr || [];		
		// 循环清空指定组件内容
		if(_moduleArr){		
			for(var i=0;i<_moduleArr.length;i++)
			    $("#"+_moduleArr[i]).empty();
		}
		// 重新设置第一个选择项
		if(_options.isFirst){
			var _defText=_options.firstName;
			if(typeof(_defText)=='undefined' || _defText.length<=0)
	       		_defText='';			
			$("#"+moduleIdPar).html("<option value='-1'>"+_defText+"</option>");
		}
		// 判断是否需要异步操作
		var isAsync=true;
		if(typeof(_options.isAsync)!='undefined' &&  !(_options.isAsync)){
	  		isAsync=false;
	    }	
		var infoNo = $('#infoNo').val();
		/** ********************可选参数操作 结束****************** */
		// ajax
		$.ajax({
			type:"POST",
			dataType:"json",
			url:"/v/system_district/areainfo",
			async: isAsync,
			data:{pid:pid,moduleId:moduleIdPar,infoNo:infoNo},
			success:getAreaInfoCallback
		});
	} catch (e) {
		alert(e.message);
		return;
	}
}
function getAreaInfoCallback(msg){
	var data = msg;
	var op=[];
	if(data.infoNo==1){
		var areaList = data.areaList;
		var moduleId=data.moduleId;
		if(typeof(areaList)!='undefined' && areaList.length>0){			
			for(var i=0;i<areaList.length;i++){
				op.push("<option value='"+areaList[i].areaId+"'>"+areaList[i].areaName+"</option>");
			}
			$("#"+moduleId).append(op.join(''));
		}
	}else{
		return;
	}
}
/** *********** 此方法用于对楼盘进行增删改时所做的权限判断，即某人只能增删改某几个片区的楼盘字典 结束*********** */


/**
 * 功能说明:全选 参数：checkbox的name值
 */

var select_all=true;

function select_All(showed){
try{       
	var showObject=document.getElementsByName(showed);
	if(typeof(showObject)=='undefined')
		return;
	for(var i=0;i<showObject.length;i++){
		showObject[i].checked=select_all;
	}
	if(select_all==true)
		select_all =false;
	else
		select_all =true;
  }
  catch(e){
  	alert(e.message);
	return;
  }
 
}

/** ==================== 文本框去掉空格以及ajax请求 ===================== * */
var id = '0';

/**
 * 单选数据变色，获取单前的ID
 */
function oneclick(o) {
	var trs = $("tr");
	trs.css("background", "#FFFFFF");
	$(o).css("background", "#0FFFFF");
	id = $(o).attr("id");
	var td = $("#" + id + " td");
}

/**
 * 单选数据变色 第一个参数表示tbody的ID值 第二个参数表示当前tr对象
 * 
 * @param tbodyid
 * @param trObj
 */
function oneclick(tbodyid, trObj) {
	if (trim(tbodyid) == "") {
		$('tr').css("background", "#FFFFFF");
	} else {
		$('#'+tbodyid+' tr').css("background", "#FFFFFF");
	}
	trObj.css("background", "#0FFFFF");
}

/**
 * 去掉空格 第一种为jquery方式返回 第二种为正则表达式方式返回
 */
function trim(str) {
	return $.trim(str);
	// return str.replace(/\s/g, '');
}

/**
 * 获取当前时间
 * 
 * @returns {String}
 */
function getTimeNow(regex) {
	var date = new Date();
	var nowTime;
	var hours = date.getHours().toString();
	var minutes = date.getMinutes().toString();
	var seconds = date.getSeconds().toString();
	if (hours < 10) {
		hours = "0" + hours;
	}
	if (minutes < 10) {
		minutes = "0" + minutes;
	}
	if (seconds < 10) {
		seconds = "0" + seconds;
	}
	
	if (regex == "HH:mm") {
		nowTime = hours + ":" + minutes;
	}
	
	if (regex == "HH:mm:ss") {
		nowTime = hours + ":" + minutes + ":" + seconds;
	}
	
	return nowTime;
}

/**
 * 统一提交数据方法 urls: 处理数据的url地址 datas:需要处理的数据，数组键值对 callback：返回数据处理的回调函数
 */
function postData(urls, datas, callback) {
	try {
		$.ajax({
			async:false,
			type : 'POST',
			dataType : 'json',
			url : urls,
			data : datas,
			success : callback
		});
	} catch (e) {
		alert(e.message);
		return;
	}
}
/** ==================== 文本框去掉空格以及ajax请求 ===================== * */

/**
 * 自定义StringBuffer函数
 */
function StringBuffer() {    
	this._strings = new Array; 
}    

/**
 * 追加字符串
 * 
 * @param str
 * @returns {StringBuffer}
 */
StringBuffer.prototype.append = function(str) {    
    this._strings.push(str);    
    return this;    
};    
   
/**
 * 返回对象本身
 */
StringBuffer.prototype.toString = function() {    
    return this._strings.join("");    
};    
   
/**
 * 返回长度
 * 
 * @returns
 */   
StringBuffer.prototype.length = function() {    
    var str = this._strings.join("");    
    return str.length;    
};    
   
/**
 * 删除后几位字符 (根据传入的参数)
 */    
StringBuffer.prototype.del = function(num) {    
    var len = this.length();    
    var str = this.toString();    
    str = str.slice(0, len - num);    
    this._strings = [];    
    this._strings.push(str);    
};   

/**
 * 当前封装的JSON包对回车处理有点问题,使用json提交会出异常,对此专门对回车进行转义一次
 * 
 * @param str
 * @returns
 */
function encodeEnter(str) {
	var out = new StringBuffer();
	for (var i = 0; str != null && i < str.length; i++) {
		var c = str.charAt(i);
		if (c == '\n') {
			out.append("\\n");
		} else {
			out.append(c);
		}
	}
	return out.toString();
}

/**
 * 替换HTML为编码
 * 
 * @param str
 */
function encodeHTML(str) {
	var out = new StringBuffer();
	for (var i = 0; str != null && i < str.length; i++) {
		var c = str.charAt(i);
		if (c == '\'')
			out.append("&#039;");
		else if (c == '\"')
			out.append("&#034;");
		else if (c == '<')
			out.append("&lt;");
		else if (c == '>')
			out.append("&gt;");
		else if (c == '&')
			out.append("&amp;");
		else if (c == ' ')
			out.append("&nbsp;");
		else if (c == '\n')
			out.append("<br/>");
		else
			out.append(c);
	}
	return out.toString();
}

/**
 * 还原HTML代码
 * 
 * @param str
 */
function decodeHTML(str) {
	var out;
	out = str.replaceAll("&#039;", "\'");
	out = out.replaceAll("&#034;", "\'");
	out = out.replaceAll("&lt;", "<");
	out = out.replaceAll("&gt;", ">");
	out = out.replaceAll("&amp;", "&");
	out = out.replaceAll("&nbsp;", " ");
	out = out.replaceAll("<br/>", "\n");
	return out.toString();
}
/**
 * 自定义StringBuffer函数
 */
function StringBuffer() {
	this._strings = new Array;
}

/**
 * 追加字符串
 * 
 * @param str
 * @returns {StringBuffer}
 */
StringBuffer.prototype.append = function(str) {
	this._strings.push(str);
	return this;
};

/**
 * 返回对象本身
 */
StringBuffer.prototype.toString = function() {
	return this._strings.join("");
};

/**
 * 返回长度
 * 
 * @returns
 */
StringBuffer.prototype.length = function() {
	var str = this._strings.join("");
	return str.length;
};

/**
 * 删除后几位字符 (根据传入的参数)
 */
StringBuffer.prototype.del = function(num) {
	var len = this.length();
	var str = this.toString();
	str = str.slice(0, len - num);
	this._strings = [];
	this._strings.push(str);
};

function dateDiff(startDate, endDate) {
	var mmSec = (endDate.getTime() - startDate.getTime()); // 得到时间戳相减
	return (mmSec / 3600000 / 24); // 单位转换为天并返回
};

function entrustClose(){
	window.close();
}
function refurbish(){
	window.location.reload(); 
}


function EncodeUtf8(cn)
{
	var cnc = escape(cn);
	var sa = cnc.split("%");
	var retV ="";
	if(sa[0] != "")
	{
		retV = sa[0];
	}
	for(var i = 1; i < sa.length; i ++)
	{
		if(sa[i].substring(0,1) == "u")
		{
			retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)))+sa[i].substring(5,sa[i].length);
		}
		else retV += "%" + sa[i];
	}
	return retV;
}


function Str2Hex(s)
{
	var c = "";
	var n;
	var ss = "0123456789ABCDEF";
	var digS = "";
	for(var i = 0; i < s.length; i ++)
	{
		c = s.charAt(i);
		n = ss.indexOf(c);
		digS += Dec2Dig(eval(n));
	}
	return digS;
}

function Dec2Dig(n1)
{
	var s = "";
	var n2 = 0;
	for(var i = 0; i < 4; i++)
	{
		n2 = Math.pow(2,3 - i);
		if(n1 >= n2)
		{
			s += '1';
			n1 = n1 - n2;
		}
		else s += '0';
	}
	return s;
}

function Dig2Dec(s)
{
	var retV = 0;
	if(s.length == 4)
	{
		for(var i = 0; i < 4; i ++)
		{
			retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
		}
		return retV;
	}
	return -1;
}

function Hex2Utf8(s)
{
	var retS = "";
	var tempS = "";
	var ss = "";
	if(s.length == 16)
	{
		tempS = "1110" + s.substring(0, 4);
		tempS += "10" + s.substring(4, 10);
		tempS += "10" + s.substring(10,16);
		var sss = "0123456789ABCDEF";
		for(var i = 0; i < 3; i ++)
		{
			retS += "%";
			ss = tempS.substring(i * 8, (eval(i)+1)*8);
			retS += sss.charAt(Dig2Dec(ss.substring(0,4)));
			retS += sss.charAt(Dig2Dec(ss.substring(4,8)));
		}
		return retS;
	}
	return "";
}

/**
 * 判断是否为空
 * 
 * @param value
 * @returns {Boolean}
 */
function isEmpty(value){
	if(value==undefined||value==null||value=='null'||value=='undefined'||value.length==0){
		return true;
	}
	return false;
}

/**
 * 截取字符
 * 
 * @param valueStr
 * @param len
 * @returns
 */
function sub_Str(valueStr, len) {
	if(valueStr==null||valueStr==undefined){
		return "&nbsp;";
	}
	if (valueStr.length > len) {
		return valueStr.substring(0, len);
	}
	return valueStr;
}

/**
 * 替换字符
 */
String.prototype.replaceAll = function(s1, s2) {
	return this.replace(new RegExp(s1, "gm"), s2);
};

/**
 * 验证手机号码
 * 
 * @param mobile
 * @returns {Boolean}
 */
function checkMobile(mobile){
	 var reg0=/^13\d{9}$/;  // 130--139。至少7位
	 var reg1=/^15\d{9}$/;  // 联通150-159。至少7位
	 var reg2=/^18\d{9}$/;  // 移动180-189。至少7位
	 var reg3=/^14\d{9}$/;  // 移动140-149。至少7位
	 var my=false;
	 if (reg0.test(mobile))my=true;
	 if (reg1.test(mobile))my=true;
	 if (reg2.test(mobile))my=true;
	 if (reg3.test(mobile))my=true;
	 return my;
}

/**
 * 验证固定电话
 * 
 * @param tel
 * @returns {Boolean}
 */
function checkTel(tel){
	var m_re = /^(((\()?\d{2,4}(\))?[-(\s)*]){0,2})?(\d{7,8})$/;
	if (!m_re.test(tel)){
		return false;
	}else{
		return true;
	}
}

/**
 * 替换特殊字符
 * 
 * @param str
 */
String.prototype.filter=function(){
	if(isEmpty(this)){
		return "";
	}
	return this.replaceAll("\n","-@-").replaceAll("\\\\","\/").replaceAll("-@-","\\n").replaceAll("\"","“").replaceAll("\'","‘");
}

/**
 * 获取当前中文时间
 * 
 * @param type
 *            1：yyyy-MM-dd 2:yyyy-MM-dd HH:mm:ss，默认为1
 * @returns
 */
function getCurrTime(type){
	var t=1;
	if(!isEmpty(type)){
		t=type;
	}
	var d=new Date();
	var year=d.getFullYear();
	var month=(d.getMonth()+1)+"";
	var date=d.getDate()+"";
	var hour=d.getHours()+"";
	var minute=d.getMinutes()+"";
	var second=d.getSeconds()+"";
	month=month.length<2?("0"+month):month;
	date=date.length<2?("0"+date):date;
	hour=hour.length<2?("0"+hour):hour;
	minute=minute.length<2?("0"+minute):minute;
	second=second.length<2?("0"+second):second;
	if(t==1){
		return year+"-"+month+"-"+date;
	}else{
		return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;
	}
}

/*
 * 转大写
 */
function toUpperCase(obj){
	obj.value = obj.value.toUpperCase();
}

/**
 * 表单验证，只能输入数字和小数点
 * 
 * @param obj
 * @returns
 */
function clearNoNum(obj,type){
	if(type==0){
		obj.value = obj.value.replace(/[^\d]/g,"");
	}else if(type==9){
		// 先把非数字的都替换掉，除了数字和.
		obj.value = obj.value.replace(/[^\d-,]/g,"");
		var reg1=/\-/g;
		if(reg1.test(obj.value.substring(0,obj.value.length-1))){
			// 保证只有出现一个-而没有多个-
			obj.value = obj.value.replace(/\-{2,}/g,"-");
			obj.value = obj.value.replace(/\,/g,"");
			// 保证-只出现一次，而不能出现两次以上
			obj.value = obj.value.replace("-","$#$").replace(/\-/g,"").replace("$#$","-");
		}
	}else{
		// 先把非数字的都替换掉，除了数字和.
		obj.value = obj.value.replace(/[^\d.]/g,"");
		// 必须保证第一个为数字而不是.
		obj.value = obj.value.replace(/^\./g,"");
		// 保证只有出现一个.而没有多个.
		obj.value = obj.value.replace(/\.{2,}/g,".");
		// 保证.只出现一次，而不能出现两次以上
		obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
		// 保证两位小数
		if(!isNaN(obj.value) && obj.value.substring(obj.value.indexOf('.')+1).length>2){
			obj.value = Math.round(obj.value*Math.pow(10,2))/Math.pow(10,2);
		}
	}
}

/**
 * 表单验证，只能输入数字、逗号及横杠
 * 
 * @param obj
 * @returns
 */
function clearNoNum_2(obj){
	// 先把非数字的都替换掉，除了数字和.
	obj.value = obj.value.replace(/[^\d-,]/g,"");
	// 必须保证第一个为数字而不是.
	obj.value = obj.value.replace(/^\,/g,"");
	obj.value = obj.value.replace(/^\-/g,"");
	
	var reg1=/\-/g;
	if(reg1.test(obj.value.substring(0,obj.value.length-1))){
		// 保证只有出现一个-而没有多个-
		obj.value = obj.value.replace(/\-{2,}/g,"-");
		obj.value = obj.value.replace(/\,/g,"");
		// 保证-只出现一次，而不能出现两次以上
		obj.value = obj.value.replace("-","$#$").replace(/\-/g,"").replace("$#$","-");
	}
	
	var reg1=/\,/g;
	if(reg1.test(obj.value)){
		// 保证只有出现一个-而没有多个-
		obj.value = obj.value.replace(/\-/g,"");
	}
}

/**
 * 表单验证，只能输入大写字母、逗号及横杠
 * 
 * @param obj
 * @returns
 */
function clearNoNum_3(obj){
	// 先把非数字的都替换掉，除了数字和.
	obj.value = obj.value.replace(/[^\A-Z-,]/g,"");
	// 必须保证第一个为数字而不是.
	obj.value = obj.value.replace(/^\,/g,"");
	obj.value = obj.value.replace(/^\-/g,"");
	
	var reg1=/\-/g;
	if(reg1.test(obj.value.substring(0,obj.value.length-1))){
		// 保证只有出现一个-而没有多个-
		obj.value = obj.value.replace(/\-{2,}/g,"-");
		obj.value = obj.value.replace(/\,/g,"");
		// 保证-只出现一次，而不能出现两次以上
		obj.value = obj.value.replace("-","$#$").replace(/\-/g,"").replace("$#$","-");
	}
	
	var reg1=/\,/g;
	if(reg1.test(obj.value)){
		// 保证只有出现一个-而没有多个-
		obj.value = obj.value.replace(/\-/g,"");
	}
}

/**
 * 只能输入数据和字母，根据type来控制
 * 
 * @param type
 *            1：数字 2:字母
 * @returns
 */
function clearInput(obj,type){
	if(type==1){
		obj.value = obj.value.replace(/[^\d]/g,"");
	}else if(type==7){
		obj.value = obj.value.replace(/[\W]/g,"");
	}else{
		obj.value = obj.value.replace(/[^\A-Z]/g,"");
	}
}

/**
 * 不能输入中文
 * @param obj
 * @returns
 */
function clearChina(obj){
	obj.value=obj.value.replace(/[^\w\.\/]/ig,'')
}

function checkEmail(value){
	//对电子邮件的验证
	var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
	if(!myreg.test(value)){
	    return false;
	}else{
		return true;
	}
}

/**
 *判断是否是字母 
 */
function isLetter(letterid){
	//var re = new RegExp(/[a-zA-Z]+/i);
	var re=/^[a-zA-Z]*$/;
	var kk=letterid;
	if(re.test(kk)){
	return true;}
	else{
	return false;
	}
}

function isInteger(letterid){
	//var re = new RegExp(/[^\d]/g);
	var re=/^[0-9]*[1-9][0-9]*$/;
	var kk=letterid;
	if(re.test(kk)){
	return true;}
	else{
	return false;
	}
	
}

function showDiv(id){
	var top=$('html').scrollTop()+($(window).height()-$('#'+id).height()) / 2+100;
	$("#"+id).css("top",top+"px");
	$("#"+id).show();
	$("select").css("visibility","hidden");
	$("#"+id+" select").css("visibility","visible");
	var sh=document.body.scrollHeight;
	var bh=getViewportInfo().h;
	$("#mask_layer").css("height", sh>bh?sh:bh);
	$("#mask_layer").show();
}

function getViewportInfo() {     
    var w = (window.innerWidth) ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.offsetWidth;     
    var h = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
    return {w:w,h:h}; 
}; 



//层拖动
function drag(obj) {
	
		if (typeof obj == "string") {
                var obj = document.getElementById(obj);
                obj.orig_index = obj.style.zIndex; //设置当前对象永远显示在最上层
        }
            obj.onmousedown = function (a) {//鼠标按下
                this.style.cursor = "move"; //设置鼠标样式
                this.style.zIndex = 1000;
                var d = document;
                if (!a) a = window.event; //按下时创建一个事件
                var x = a.clientX - document.body.scrollLeft - obj.offsetLeft; //x=鼠标相对于网页的x坐标-网页被卷去的宽-待移动对象的左外边距
                var y = a.clientY - document.body.scrollTop - obj.offsetTop; //y=鼠标相对于网页的y左边-网页被卷去的高-待移动对象的左上边距
                d.onmousemove = function (a) {//鼠标移动
                    if (!a) a = window.event; //移动时创建一个事件
					var l = a.clientX + document.body.scrollLeft - x;
					//var divLeft = parseInt($(obj).css("left").replace("px",""));
					//if(($(document).width()-20-$(obj).width())>divLeft){
					//	$("#xxxxx").html(divLeft+"--------"+($(document).width()-$(obj).width()));
						//l = ($(document).width()-20-$(obj).width());
					//	  document.onmousemove = null;
					//}
                    obj.style.left = l;
                    obj.style.top = a.clientY + document.body.scrollTop - y;
                }
                d.onmouseup = function () {//鼠标放开
                    document.onmousemove = null;
                    document.onmouseup = null;
                    obj.style.cursor = "normal"; //设置放开的样式
                    obj.style.zIndex = obj.orig_index;
                }
            }
        }
	

	 function CmycurD(num)// 转换人民币大小金额 
    {
        var str1 = "零壹贰叁肆伍陆柒捌玖";            //0-9所对应的汉字 
        var str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 
        var str3 = "";    //从原num值中取出的值 
        var str4 = "";    //数字的字符串形式 
        var str5 = "";  //人民币大写金额形式 
        var i = 0;    //循环变量 
        var j = 0;    //num的值乘以100的字符串长度 
        var ch1 = "";    //数字的汉语读法 
        var ch2 = "";    //数字位的汉字读法 
        var nzero = 0;  //用来计算连续的零值是几个 
        var temp;            //从原num值中取出的值 

        str4 = (parseInt(Math.round(Math.abs((parseFloat(num)).toFixed(2) * 100)))).toString();        //将num乘100并转换成字符串形式 
        j = str4.length;      //找出最高位 
        if (j > 15) { return ""; }
        str2 = str2.substr(15 - j);   //取出对应位数的str2的值。如：200.55,j为5所以str2=佰拾元角分 

        //循环取出每一位需要转换的值 
        for (i = 0; i < j; i++) {
            str3 = str4.substr(i, 1);          //取出需转换的某一位的值 
            temp = parseInt(str3);      //转换为数字 
            if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) {
                //当所取位数不为元、万、亿、万亿上的数字时 
                if (str3 == "0") {
                    ch1 = "";
                    ch2 = "";
                    nzero = nzero + 1;
                }
                else {
                    if (str3 != "0" && nzero != 0) {
                        ch1 = "零" + str1.substr(temp * 1, 1);
                        ch2 = str2.substr(i, 1);
                        nzero = 0;
                    }
                    else {
                        ch1 = str1.substr(temp * 1, 1);
                        ch2 = str2.substr(i, 1);
                        nzero = 0;
                    }
                }
            }
            else {
                //该位是万亿，亿，万，元位等关键位 
                if (str3 != "0" && nzero != 0) {
                    ch1 = "零" + str1.substr(temp * 1, 1);
                    ch2 = str2.substr(i, 1);
                    nzero = 0;
                }
                else {
                    if (str3 != "0" && nzero == 0) {
                        ch1 = str1.substr(temp * 1, 1);
                        ch2 = str2.substr(i, 1);
                        nzero = 0;
                    }
                    else {
                        if (str3 == "0" && nzero >= 3) {
                            ch1 = "";
                            ch2 = "";
                            nzero = nzero + 1;
                        }
                        else {
                            if (j >= 11) {
                                ch1 = "";
                                nzero = nzero + 1;
                            }
                            else {
                                ch1 = "";
                                ch2 = str2.substr(i, 1);
                                nzero = nzero + 1;
                            }
                        }
                    }
                }
            }
            if (i == (j - 11) || i == (j - 3)) {
                //如果该位是亿位或元位，则必须写上
                ch2 = str2.substr(i, 1);
            }
            str5 = str5 + ch1 + ch2;

            if (i == j - 1 && str3 == "0") {
                //最后一位（分）为0时，加上“整” 
                str5 = str5 + '整';
            }
        }
        if (num == 0) {
            str5 = "零元整";
        }
        return str5;
    }


/**
 * 提示层
 * 
 * @param message
 * @param type
 * @param title
 * @returns
 */
function show_mess(message,type,title,handler,width,height){
	if(isEmpty(type)){
		type=2;
	}
	if(isEmpty(title)){
		title="温馨提示";
	}
	if(type==1){
		ymPrompt.alert(message,width,height,title,handler);
	}else if(type==2){
		ymPrompt.errorInfo(message,width,height,title,handler);
	}else if(type==3){
		ymPrompt.confirmInfo(message,width,height,title,handler);
	}else if(type==4){
		ymPrompt.succeedInfo(message,width,height,title,handler);
	}
}

function $_ym(id){
	return $("#ym-window").find("#"+id);
}

function $_ymName(name){
	return $("#ym-window").find("input[name='"+name+"']");
}

function $_k(key){
	return $("#ym-window").find(key);
}


function getText(did) {
	var text = $_ym(did).find("option:selected").text();
	return text;
}

function returnFloat2(value) { //保留两位小数点，一位小数自动补零
	if(isEmpty(value)){
		value = 0;
		//return 0.00;
	}
		
	value = Math.round(parseFloat(value) * 100) / 100;
	if(value.toString() =='NaN'){
		value = 0;
	}
	var xsd = value.toString().split(".");
	if(xsd.length==1){
	 value = value.toString()+".00";
	 return value;
	}
	if(xsd.length>1){
		if(xsd[1].length<2){
			value = value.toString()+"0";  
		}
	 return value;
	}
}

/**
	表格操作
**/
function scrollTable(did){
	 var table = $('#'+did).each(function(){
			var tableW = $(this).width();
			if(tableW<=960)tableW=980;
			$(this).css("width",tableW-22);
            var $table = $(this).css('border-collapse','collapse');
            var $tbody = $table.find('tbody').eq(0);
            var sbPosition = {left: $tbody.position().left + $tbody.outerWidth(), top: $tbody.position().top };
            var theadHeight= $table.find('thead').height();
			var tfootHeight= $table.find('tfoot').height();
			$(".scrollbar").remove();
            var $scrollbar = $('<div class="scrollbar"/>').css({'position':'absolute', 'overflow-y':'auto','left':sbPosition.left-22, 'top':sbPosition.top-theadHeight, 'height':'0px','width':'40px'})
                .append($('<div/>'))
                .appendTo($table.parent());
                
                
            $table.bind('rownum',function(event, newRowNum){
                //先设置显示的行
                var nFirst = parseInt($tbody.attr('itemIndex') || '0');
                $tbody.find('tr').hide();
                $tbody.find('tr').each(function(i){
                    if( i >= nFirst && i < nFirst + newRowNum){
						$(this).show();
					}else{
                        $(this).hide();
                    }
                });
                
                var scrollHeight =  $tbody.find('tr').length  * $tbody.height() / newRowNum+theadHeight+tfootHeight;
                var $sb = $scrollbar;
                $sb.css('height',$tbody.height()+theadHeight+tfootHeight);
                $sb.find('div').eq(0).css('height',scrollHeight);
            });
            
            $scrollbar.scroll(function(){
                $sb = $(this);
                var nNewIndex = Math.floor($sb.scrollTop() / ($sb.attr('scrollHeight')-theadHeight-tfootHeight) * $tbody.find('tr').length);
                var nIndex = parseInt($tbody.attr('itemIndex') || '0');
                var rownum = parseInt($table.attr('rownum') || '10');
                if(nIndex != nNewIndex)
                {
                    $tbody.find('tr').each(function(i){
                        if(i >= nNewIndex && i < nNewIndex + rownum)
                        {
                            $(this).show();
                        }
                        else
                        {
                            $(this).hide();
                        }
                    });
                    $tbody.attr('itemIndex', nNewIndex); 
                }
                
                
            });
            $table.trigger('rownum',parseInt($table.attr('rownum')));
        });
}

/**
日期计算 
**/
function  AddDays(str,value)  {
	var date = StringToDate(str);
	//date.setDate(date.getDate()+value); 
	var year=date.getFullYear();
	var month=(date.getMonth()+1)+"";
	var day=(date.getDate()+value)+"";
	return year+"-"+month+"-"+day;

} 
/**
字符串转时间
**/
function StringToDate(DateStr)  
{   
    var converted = Date.parse(DateStr);  
    var myDate = new Date(converted);  
    if (isNaN(myDate))  
    {   
        //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';  
        var arys= DateStr.split('-');  
        myDate = new Date(arys[0],--arys[1],arys[2]);  
    }  
    return myDate;  
}   

/**
时间期限效验
times = 毫秒 一天= 86400000
**/
function outDay(DateStr,times){
	var arys= DateStr.substring(0,10).split('-');
	var sfm = DateStr.substring(11,19).split(':');
    var myDate = new Date(arys[0],--arys[1],arys[2],sfm[0],sfm[1],sfm[2]); 

	var newDay = new Date();
	var ntime = newDay.getTime();
	var times=times*1;
	if((myDate.getTime()+times)>ntime){
		return true;	
	}else{
		return false;	
	}
}

function obj2str(o){  
    var r = [];  
    if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";  
    if(typeof o =="undefined") return "undefined";  
    if(typeof o == "object"){  
        if(o===null) return "null";  
        else if(!o.sort){  
            for(var i in o)  
                r.push(i+":"+obj2str(o[i]))  
            r="{"+r.join()+"}"  
        }else{  
            for(var i =0;i<o.length;i++)  
                r.push(obj2str(o[i]))  
            r="["+r.join()+"]"  
        }  
        return r;  
    }  
    return o.toString();  
}  
  
//下面这种方法证明toString()方法得到的是一个新的string对象，并不是字符串  
function JSON_to_String(){  
    var json = {"name":"Mike","sex":"女","age":29};   
    alert(typeof json);  
    alert("json.name : " + json.name);  
    var string = json.toString();  
    alert(string);  
    alert(typeof string);  
    alert("string : " + string.name);  
}  
  
/*使用jquery插件，需要注意的是json的key-value必须都为字符串，即都需要使用双引号包起来, 
不能使用单引号，如果value是数字就不需要用双引号包起来*/  
function jquery_string_to_json(){  
    var jsonString = '{"name":"huangbiao","sex":"boy","age":16}';  
    //var jsonString = "{'name':'huangbiao','sex':'boy','age':16}";//错误的声明  
    alert(typeof jsonString);  
    var obj = jQuery.parseJSON(jsonString);  
    alert(typeof obj);  
}  
  
/*使用eval方法对于字符串里面的key-value都必须使用双引号括起来，不能使用单引号，否则不 
能够正常解析*/  
function String_to_JSON(json){  
   // var json = '{"name":"huangbiao","sex":"boy","age":16}';  
    var temp = eval('('+json+')');//eval方法里面的括号是不能够少的，否则报脚本错误  
    return temp;
   // alert(typeof temp);  
    //alert(temp.name);  
      
    //使用JSON对象只能在IE8以上的版本支持，因此不建议使用这种方式转换  
    //var json = '{"name":"Mike","sex":"女","age":"29"}';   
    //var temp = JSON.parse(json);  
    //alert(temp.name);  
}  


function json2obj(o){  
    var result = obj2str(o);  
    return eval("(" + result + ")");  
}
